# 有语的第一个项目实践，外星人大战项目
# 第一章，游戏运行项目
# 22/9/8
import pygame

from gamefunctions import GameFunctions
from settings import Settings
from ship import Ship


class AlienInvasion:
    # 管理游戏资源和行为的类
    def __init__(self):
        """初始化并创建游戏资源"""
        """初始化背景设置"""
        pygame.init()
        """创建实例对象settings"""
        self.settings = Settings()
        self.screen = pygame.display.set_mode((0, 0), pygame.FULLSCREEN)
        self.settings.screen_high = self.screen.get_rect().height
        self.settings.screen_width = self.screen.get_rect().width

        """屏幕的长款大小设置、颜色设置"""
        self.bg_color = self.settings.bg_color
        self.screen = pygame.display.set_mode((self.settings.screen_width,
                                               self.settings.screen_high))
        self.ship = Ship(self)
        """创建与子弹相关的项"""
        self.bullets = pygame.sprite.Group()
        self.aliens = pygame.sprite.Group()
        self.game_fun = GameFunctions(self)
        pygame.display.set_caption("机器人大战主窗口")

    def run_game(self):
        """开始游戏主循环"""
        while True:
            """通过调用Game_function函数使游戏主循环看起来更加简洁"""
            # 检查按键事件
            self.game_fun.check_events()
            if self.game_fun.game_stats.game_active:
                # 飞船的移动
                self.ship.update()
                # 子弹的操作
                self.game_fun.update_bullet()
                # 外星人的自主移动
                self.game_fun.update_alien()
            # 绘制屏幕、飞船、子弹
            self.game_fun.update_screen()


if __name__ == '__main__':
    ai = AlienInvasion()
    ai.run_game()
